package pe.edu.pucp.sigepa.recocidosimulado.motorgeneradorrutasrs2;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import pe.edu.pucp.sigepa.recocidosimulado.domain.interfaz.Problema;
import pe.edu.pucp.sigepa.recocidosimulado.domain.interfaz.Solucion;
import pe.edu.pucp.sigepa.recocidosimulado.fachada.MotorGeneradorTrayectoriasFachada;

/**
 * Recocido simulado
 *
 */
public class PrincipalAlgoritmo 
{	
    
    public static void main(String[] args) throws ParseException {
        
        //MUESTRAS EXITOSAS
//        Problema problema = new Problema(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse("2012-09-02 08:00:00"), 37, 36, 1);
//        Problema problema = new Problema(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse("2012-09-02 08:00:00"), 48, 36, 1); //La mejor        
        
//        Problema problema = new Problema(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse("2012-09-02 08:00:00"), 48, 36, 1);
        
//        Problema problema = new Problema(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse("2012-09-02 08:00:00"), 48, 36, 1600);
//        Problema problema = new Problema(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse("2012-09-02 08:00:00"), 1, 2, 20);
        Problema problema = new Problema(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse("2012-09-02 08:00:00"), 1, 3, 20);
                
        Solucion solucion = new MotorGeneradorTrayectoriasFachada().obtenerSolucion(problema);

        if (solucion == null) {
            System.out.println("Solucion no encontrada. Intente nuevamente");
            return;
        }
        
        System.out.println("Problema = " + problema);
        System.out.println("Solucion = " + solucion);
        System.out.println("Costo = " + problema.calcularValor(solucion));        
        System.out.println("Tiempo = " + problema.calcularTiempo(solucion));
        
        if (    problema.getIdAeropuertoOrigen() == solucion.get(0).getAeropuertoOrigen().getIdaeropuerto() &&
                problema.getIdAeropuertoDestino() == solucion.get(solucion.size() - 1).getAeropuertoDestino().getIdaeropuerto()) {
            
            System.out.println("REPORTE: La solucion es consistente...");
        
        } else {
        
            System.out.println("REPORTE: La solucion no es consistente... No parte y/o llega al aeropuerto origen/destino...");
            
        }
    }    
    
}
